#ifndef FACTORY_PATTERN_H
#define FACTORY_PATTERN_H

#include <iostream>
#include "utils.h"

class Graph_Factory {
	public:
		virtual int getType()=0;
		virtual void calc_mst()=0;
#if 0
	protected:
		int _numVertex;
		int numEdges; 
		
		std::vector<P> v;
		std::vector<E> e;
		std::vector<float> w;
#endif
};

class Kruskal_Calc : public Graph_Factory
{
	public:
		Kruskal_Calc():type(1){};
	
		int getType() {return type;};	
		void calc_mst();

	private:
		int type;
};

class Prims_Calc : public Graph_Factory
{
	public:
		Prims_Calc():type(2){};
	
		int getType() {return type;};	
		void calc_mst();

	private:
		int type;
};

#endif
